Oxlint——新JavaScript Linter,比ESLint快50-100倍
近日 Hacker News 上的一个 Oxlint 的贴子引起前端圈子的广泛关注,评论达到 190+ 次。
本文将详述阐述 Oxlint 的概念、用法及其核心优势。
1.Oxlint 介绍
Oxlint 是 Oxc 项目下的一款基于 Rust 编写的 Linter 工具,当前最新版本 v0.0.20,旨在捕获错误或无用的代码,默认情况下无需任何配置。Oxc(Oxidation Compiler) 正在为 JavaScript 和 TypeScript 创建一系列高性能工具。Oxc 正在构建一个解析器、linter、格式化程序、转换器、压缩器、解析器等,这些全部用 Rust 编写,性能表现优秀。
Oxc 项目与 Biome 和 Ruff 的理念相同:
JavaScript 工具可以用性能更强的语言重写。 集成的工具链可以提高效率,而这些效率是一套独立的工具所不具备的。
2.Oxlint 的优势
2.1.出色的性能
Oxlint 在 Hacker News 上被引发热烈讨论,主要原因还是它的优秀性能。性能提升的主要原因是,Oxlint 是专为性能而设计的,利用 Rust 和并行处理作为关键因素。从下图的 Linter Benchmark 可以看出,它的性能比 ESLint 快 50 - 100 倍。
另一方面,从尤大的推文中也可以得到进一步论证:
2.2.检查正确性
Oxlint 默认用于识别错误、冗余或令人困惑的代码,更注重正确性而不是不必要的挑剔规则(按性能、可疑、迂腐或样式进行分类),这些规则默认情况下是禁用的。
2.3.易用性
建立新的 JavaScript / TypeScript 代码库变得越来越复杂。很有可能会遇到工具之间的兼容性问题,从而浪费大量时间。
这就是将 Oxlint 设计为开箱即用的零配置工具的原因,甚至不需要Node.js。大多数调整都可以通过命令行进行,从 ESLint 配置文件读取配置文件的工作目前正在进行中。
2.4.增强诊断功能
理解代码检查工具的提示信息可能会很有挑战性。Oxlint 旨在通过准确定位根本原因并提供有帮助的提示信息来简化此过程,从而节省宝贵的时间,无需阅读冗长的规则文档。
在 vscode 资源库中运行 oxlint -D perf
:
2.5.统一的规则
目前,Oxlint 还没有提供插件系统,但其团队正在积极整合来自 TypeScript、React、Jest、Unicorn、JSX-a11y 和 Import 等流行插件的规则。
3.Oxlint 的用法
当前阶段,Oxlint 并非旨在完全取代 ESLint,毕竟 ESLint 生态已经很完善了,有些时候我们并不关注它的性能问题,但当 ESLint 的速度成为工作流程瓶颈时,可以把它当做一个增强工具。
我们常见的使用 ESLint 的场景有两种:
1)代码提交时:
在 Git 提交的时候进行相关代码约束,比如我们通常会在项目中增加 lint-staged
和 huskey
。
"lint-staged": {
"*.{js,jsx}": [
"eslint --fix"
],
},
2)代码保存时:
代码保存时,一般通过配置 ESLint 插件来实现,比如在 VSCode 中配置 ESLint。
在大型项目中使用时,相比 ESLint 的几十秒,Oxlint 只需要几秒就可以完成。这对于我们日常的开发体验和效率将有一个质的提升。
要在JavaScript / TypeScript代码库中测试 Oxlint,只需在存储库的根目录中执行以下命令:
npx oxlint@latest
# or
pnpm dlx oxlint@latest
# or
yarn dlx oxlint@latest
# or
bunx oxlint@latest
# or
deno run npm:oxlint@latest
总结
在过去五年中,Rust 凭借其令人难以置信的开发体验和灵活性,成为最受欢迎和最受喜爱的 15 种编程语言之一,越来越多的前端工具链被使用 Rust 重构。Oxlint 凭借着众多优势被广大开发者所喜爱,期待 Oxlint 未来能有更好的表现。
大家都在看